/* 
 * File:   ProcessQuitSignal.h
 * Author: dell
 *
 * Created on 2012年4月9日, 下午3:01
 */

#ifndef PROCESSQUITSIGNAL_H
#define	PROCESSQUITSIGNAL_H

#include <evhttp/ProcessSignal.h>
#include <evhttp/Timer.h>

//#include "ProcessSignal.h"
//#include "Timer.h"
//#include <evhttp/event/Event.h>

/**
 * 包含了所有让进程退出的信号 
 */

namespace Rapid{
    class ProcessQuitSignal : public ProcessSignal , public Timer{

    public:
        ProcessQuitSignal(): started(false){
            addSignal(SIGINT);
            addSignal(SIGQUIT);
//            addSignal(SIGKILL);
            addSignal(SIGABRT);
            addSignal(SIGFPE);
            addSignal(SIGILL);
            addSignal(SIGSEGV);
            addSignal(SIGTERM);
//            addSignal(SIGSTOP);
            addSignal(SIGTSTP);
            addSignal(SIGHUP);
            addSignal(SIGALRM);   
        }
        virtual ~ProcessQuitSignal(){

        }

        void start(){
            started = true;
            ProcessSignal::start();
        }

        void stop(){
            ProcessSignal::stop();
            started = false;
        }      

        bool isStarted(){
            return started;
        }
        
    private:
        bool started;
    };
}
#endif	/* PROCESSQUITSIGNAL_H */

